import axios from 'axios'
import store from '@/store'
import { customHistory } from './history'
import { message } from 'antd'
import { Lagout } from '@/store/actions'

export const http = axios.create({
  baseURL: 'http://geek.itheima.net/v1_0',
  // baseURL: 'http://toutiao.itheima.net/v1_0',
  timeout: 5000,
})

// 请求拦截器
http.interceptors.request.use((config) => {
  const { Login: token } = store.getState()
  // 除了登录页面，其他统一添加token
  if (!config.url.startsWith('/athorization')) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

// 响应拦截器
http.interceptors.response.use(undefined, (error) => {
  // 响应失败时，执行的回调
  console.dir(error)
  if (!error.response) {
    message.warning('网络超时！请稍后重试')
    return Promise.reject(error)
  }

  if (error.response.status === 401) {
    message.warning('身份失效，请重新登录')
    customHistory.push('/Login')
    // 退出并进行token和个人信息清除
    store.dispatch(Lagout())
  }

  // Promise.reject 是promise提供的快捷方法，可以直接得到一个 失败的 promise对象
  return Promise.reject(error)
})
